home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / grp.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  7KB  |  206 lines

  1. /* Copyright (C) 1991,1992,1995-2001,2003,2004 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. /*
  20.  *    POSIX Standard: 9.2.1 Group Database Access    <grp.h>
  21.  */
  22.  
  23. #ifndef    _GRP_H
  24. #define    _GRP_H    1
  25.  
  26. #include <features.h>
  27.  
  28. __BEGIN_DECLS
  29.  
  30. #include <bits/types.h>
  31.  
  32. #define __need_size_t
  33. #include <stddef.h>
  34.  
  35.  
  36. /* For the Single Unix specification we must define this type here.  */
  37. #if (defined __USE_XOPEN || defined __USE_XOPEN2K) && !defined __gid_t_defined
  38. typedef __gid_t gid_t;
  39. # define __gid_t_defined
  40. #endif
  41.  
  42. /* The group structure.     */
  43. struct group
  44.   {
  45.     char *gr_name;        /* Group name.    */
  46.     char *gr_passwd;        /* Password.    */
  47.     __gid_t gr_gid;        /* Group ID.    */
  48.     char **gr_mem;        /* Member list.    */
  49.   };
  50.  
  51.  
  52. #if defined __USE_SVID || defined __USE_GNU
  53. # define __need_FILE
  54. # include <stdio.h>
  55. #endif
  56.  
  57.  
  58. #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  59. /* Rewind the group-file stream.
  60.  
  61.    This function is a possible cancellation point and therefore not
  62.    marked with __THROW.  */
  63. extern void setgrent (void);
  64.  
  65. /* Close the group-file stream.
  66.  
  67.    This function is a possible cancellation point and therefore not
  68.    marked with __THROW.  */
  69. extern void endgrent (void);
  70.  
  71. /* Read an entry from the group-file stream, opening it if necessary.
  72.  
  73.    This function is a possible cancellation point and therefore not
  74.    marked with __THROW.  */
  75. extern struct group *getgrent (void);
  76. #endif
  77.  
  78. #ifdef    __USE_SVID
  79. /* Read a group entry from STREAM.
  80.  
  81.    This function is not part of POSIX and therefore no official
  82.    cancellation point.  But due to similarity with an POSIX interface
  83.    or due to the implementation it is a cancellation point and
  84.    therefore not marked with __THROW.  */
  85. extern struct group *fgetgrent (FILE *__stream);
  86. #endif
  87.  
  88. #ifdef __USE_GNU
  89. /* Write the given entry onto the given stream.
  90.  
  91.    This function is not part of POSIX and therefore no official
  92.    cancellation point.  But due to similarity with an POSIX interface
  93.    or due to the implementation it is a cancellation point and
  94.    therefore not marked with __THROW.  */
  95. extern int putgrent (__const struct group *__restrict __p,
  96.              FILE *__restrict __f);
  97. #endif
  98.  
  99. /* Search for an entry with a matching group ID.
  100.  
  101.    This function is a possible cancellation point and therefore not
  102.    marked with __THROW.  */
  103. extern struct group *getgrgid (__gid_t __gid);
  104.  
  105. /* Search for an entry with a matching group name.
  106.  
  107.    This function is a possible cancellation point and therefore not
  108.    marked with __THROW.  */
  109. extern struct group *getgrnam (__const char *__name);
  110.  
  111. #if defined __USE_POSIX || defined __USE_MISC
  112.  
  113. # ifdef __USE_MISC
  114. /* Reasonable value for the buffer sized used in the reentrant
  115.    functions below.  But better use `sysconf'.  */
  116. #  define NSS_BUFLEN_GROUP    1024
  117. # endif
  118.  
  119. /* Reentrant versions of some of the functions above.
  120.  
  121.    PLEASE NOTE: the `getgrent_r' function is not (yet) standardized.
  122.    The interface may change in later versions of this library.  But
  123.    the interface is designed following the principals used for the
  124.    other reentrant functions so the chances are good this is what the
  125.    POSIX people would choose.
  126.  
  127.    This function is not part of POSIX and therefore no official
  128.    cancellation point.  But due to similarity with an POSIX interface
  129.    or due to the implementation it is a cancellation point and
  130.    therefore not marked with __THROW.  */
  131.  
  132. # ifdef __USE_GNU
  133. extern int getgrent_r (struct group *__restrict __resultbuf,
  134.                char *__restrict __buffer, size_t __buflen,
  135.                struct group **__restrict __result);
  136. # endif
  137.  
  138. /* Search for an entry with a matching group ID.
  139.  
  140.    This function is a possible cancellation point and therefore not
  141.    marked with __THROW.  */
  142. extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf,
  143.                char *__restrict __buffer, size_t __buflen,
  144.                struct group **__restrict __result);
  145.  
  146. /* Search for an entry with a matching group name.
  147.  
  148.    This function is a possible cancellation point and therefore not
  149.    marked with __THROW.  */
  150. extern int getgrnam_r (__const char *__restrict __name,
  151.                struct group *__restrict __resultbuf,
  152.                char *__restrict __buffer, size_t __buflen,
  153.                struct group **__restrict __result);
  154.  
  155. # ifdef    __USE_SVID
  156. /* Read a group entry from STREAM.  This function is not standardized
  157.    an probably never will.
  158.  
  159.    This function is not part of POSIX and therefore no official
  160.    cancellation point.  But due to similarity with an POSIX interface
  161.    or due to the implementation it is a cancellation point and
  162.    therefore not marked with __THROW.  */
  163. extern int fgetgrent_r (FILE *__restrict __stream,
  164.             struct group *__restrict __resultbuf,
  165.             char *__restrict __buffer, size_t __buflen,
  166.             struct group **__restrict __result);
  167. # endif
  168.  
  169. #endif    /* POSIX or reentrant */
  170.  
  171.  
  172. #ifdef    __USE_BSD
  173.  
  174. # define __need_size_t
  175. # include <stddef.h>
  176.  
  177. /* Set the group set for the current user to GROUPS (N of them).  */
  178. extern int setgroups (size_t __n, __const __gid_t *__groups) __THROW;
  179.  
  180. /* Store at most *NGROUPS members of the group set for USER into
  181.    *GROUPS.  Also include GROUP.  The actual number of groups found is
  182.    returned in *NGROUPS.  Return -1 if the if *NGROUPS is too small.
  183.  
  184.    This function is not part of POSIX and therefore no official
  185.    cancellation point.  But due to similarity with an POSIX interface
  186.    or due to the implementation it is a cancellation point and
  187.    therefore not marked with __THROW.  */
  188. extern int getgrouplist (__const char *__user, __gid_t __group,
  189.              __gid_t *__groups, int *__ngroups);
  190.  
  191. /* Initialize the group set for the current user
  192.    by reading the group database and using all groups
  193.    of which USER is a member.  Also include GROUP.
  194.  
  195.    This function is not part of POSIX and therefore no official
  196.    cancellation point.  But due to similarity with an POSIX interface
  197.    or due to the implementation it is a cancellation point and
  198.    therefore not marked with __THROW.  */
  199. extern int initgroups (__const char *__user, __gid_t __group);
  200.  
  201. #endif /* Use BSD.  */
  202.  
  203. __END_DECLS
  204.  
  205. #endif /* grp.h  */
  206.